package cn.qyl.joha.controller.admin;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.qyl.joha.common.PageConstant;
import cn.qyl.joha.common.PageModel;
import cn.qyl.joha.dto.GoodsType;
import cn.qyl.joha.service.GoodsTypeService;
import cn.qyl.joha.service.Impl.GoodsTypeServiceImpl;


@Controller
@RequestMapping("/admin/goodsType")
public class GoodsTypeController {

	GoodsTypeService goodsTypeService = new GoodsTypeServiceImpl();
	//分页获取商品类型列表
	@RequestMapping("/goodsTypeList")
	public String goodsTypeList(String pageIndex,String pageSize,GoodsType goodsType,ModelMap map,HttpServletRequest request){
		String tip = (String) request.getAttribute(PageConstant.TIP);
		//创建分页模型
		PageModel pageModel = new PageModel();
		if("".equals(pageIndex) || pageIndex == null){
			pageModel.setPageIndex(0);
		}else{
			request.removeAttribute(PageConstant.TIP);
			pageModel.setPageIndex(Integer.parseInt(pageIndex));
		}
		if(pageSize != null && pageSize!=""){
			pageModel.setPageSize(Integer.parseInt(pageSize));
		}
		
		//获取总记录数
		int recordCount = goodsTypeService.getCount(goodsType);
		pageModel.setRecordCount(recordCount);
		//调用业务层的方法获取商品类型列表
		List<GoodsType> goodsTypes = goodsTypeService.getGoodsTypeList(pageModel,goodsType);
		
		map.addAttribute("goodsTypes", goodsTypes);
		map.addAttribute("goodsType", goodsType);
		map.addAttribute("pageModel", pageModel);
		
		return "goodsType/goodsTypeList";
	}
	
	//跳到添加商品类型页面
	@RequestMapping("/toGoodsType")
	public String toGoodsType(){
		return "goodsType/addGoodsType";
	}
	
	//添加商品类型
	@RequestMapping("/addGoodsType")
	public String addGoodsType(GoodsType goodsType,ModelMap map){
		goodsTypeService.addGoodsType(goodsType);
		
		map.put(PageConstant.TIP, "保存成功!!");
		return "goodsType/addGoodsType";
	}
	
	//跳到更新商品类型页面
	@RequestMapping("/toUpdateGoodsType")
	public String toUpdateGoodsType(String code,ModelMap map){
		GoodsType goodsType = goodsTypeService.getGoodsTypeByCode(code);
		map.addAttribute("goodsType", goodsType);
		return "goodsType/updateGoodsType";
		
	}
	
	
	
	//异步获取商品类型
	@RequestMapping("getAjaxGoodsTypes")
	@ResponseBody
	public List<Map<String,String>> getAjaxGoodsTypes(){
		List<Map<String,String>> goodsTypes = goodsTypeService.getMapGoodsTypes();
		return goodsTypes;
	}
	
	//更新商品类型
	@RequestMapping("/updateGoodsType")
	public String updateGoodsType(GoodsType goodsType,ModelMap map){
		
		int count = goodsTypeService.updateGoodsType(goodsType);
		if(count>0){
			map.put(PageConstant.TIP, "更新成功!");
		}else{
			map.put(PageConstant.TIP, "更新失败!");
		}
		return "forward:toUpdateGoodsType";
	}
	
	//删除单个商品类型
	@RequestMapping("/delGoodsType")
	public String delGoodsType(String typeCode,ModelMap map,HttpServletRequest request){
		
		int count = goodsTypeService.delGoodsType(typeCode);
		if(count>0){
			map.put(PageConstant.TIP,"删除成功!");
		}else{
			map.put(PageConstant.TIP, "删除失败!");
		}
		/*//清除参数
		request.removeAttribute("code");*/
		return "forward:goodsTypeList";
	}
	
	//批量删除商品类型
	@RequestMapping("/delGoodsTypeByCodes")
	public String delGoodsTypeByCodes(int[] codes,ModelMap map){
		
		int count = goodsTypeService.delGoodsTypeByCodes(codes);
		//判断是否删除成功
		if(count>0){
			map.addAttribute(PageConstant.TIP, "成功删除["+count+"]条记录");
		}else{
			map.addAttribute(PageConstant.TIP, "删除失败!");
		}
		
		return "forward:goodsTypeList";
	}
	
	
}
